if (англ. «если») задаёт определённое поведение программы в зависимости от заданных разработчиком условий: «если условие истинно — выполни код, следующий за условием».if rating = 4.9# Если переменная rating строго больше 4.7 - напечатать реплику "Фильм крут"# В иной ситуации блок кода под условием будет пропущен:# программа сразу перейдёт к строке print('Проверка окончена')if rating > 4.7: print('Фильм крут')# Этот код не вложен в блок if,# так что выполнится в любом случаеprint('Проверка окончена')if и условие;if) оценка фильма выше 4.7 — выводить реплику «Фильм крут»;else) выводить строку «Так себе киношечка»;if, не выполняется. Для этого в конструкции условного оператора предусмотрено ключевое слово else (англ. «иначе»). Код, записанный после этого ключевого слова, сработает в том случае, если условие в if ложно.else пишется на том же уровне, что и if, а код, выполняемый после else, пишется с четырьмя отступами от else:rating = 4.9
if rating > 4.7:
print('Фильм крут')
else:
# Код выполнится, если rating <= 4.7
# Отступы важны!
print('Так себе киношечка')
print('Проверка окончена') else не указывают никаких условий: код из этого блока будет выполнен в любой ситуации, когда условие после if не выполнено.if...else можно записать коротко:rating = 4.9
# Так вы умеете:
if rating > 4.7:
print('Фильм крут')
else:
print('Так себе киношечка')
# А так будет короче:
result = 'Фильм крут' if rating > 4.7 else 'Так себе киношечка'
# В отличие от обычной конструкции if...else
# тернарный оператор не просто выполняет блок кода,
# а возвращает значение
print(result)
print('Проверка окончена') 'Фильм крут' если rating > 4.7, иначе 'Так себе киношечка' rating больше 4.7 — оператор вернёт значение 'Фильм крут';'Так себе киношечка'.if)оценка фильма выше 4.7 — выводить реплику «Фильм крут»;elif) оценка выше 3.5, но не выше 4.7 — напечатать строку «Смотреть можно»;else) выводить строку «Так себе киношечка»;rating = 4.9
if rating > 4.7:
print('Фильм крут')
else:
# Вложенное ветвление
if rating > 3.5:
print('Смотреть можно')
else:
print('Так себе киношечка')
print('Проверка окончена') if есть специальный блок, в котором можно не просто обработать «все прочие варианты, противоречащие условию в if», но и задать дополнительное условие. elif (от англ. «иначе-если»): «если условие в if не выполняется — проверим на другое условие». Блок elif — это «синтаксический сахар» для конструкции else с вложенным if; elif делает то же самое, но код становится «плоским», без вложенностей, и за счёт этого — более читаемым и структурированным.Flat is better than nested Плоское лучше, чем вложенное. ©The Zen of Python
elif записывается условие,if;elif выполнится;elif отбивается четырьмя отступами.rating = 3.0
if rating > 4.7:
print('Фильм крут')
elif rating > 3.5:
print('Смотреть можно')
else:
print('Так себе киношечка')
print('Проверка окончена') if...elif...else может быть включено сколько угодно блоков elif — при ветвлении это позволит учесть все возможные варианты.elif и else) не будет даже заглядывать. if rating > 3.5, то программа никогда не дойдёт до условия elif rating > 4.7rating = 5
if rating > 3.5:
print('Смотреть можно')
elif rating > 4.7:
print('Фильм крут')
else:
print('Так себе киношечка')
print('Проверка окончена')
# Вывод в терминал: Смотреть можно
# хотя, по логике, должно быть 'Фильм крут' if можно вкладывать одну в другую. Расширим код условием if rating: — такая проверка позволит убедиться, что rating не равен 0 или None.rating = 4.9
if rating:
if rating > 4.7:
print('Фильм крут')
else:
if rating > 3.5:
print('Смотреть можно')
else:
print('Так себе киношечка')
else:
print('У фильма нет оценки')
print('Проверка окончена') if — Python проверяет описанное условие, например rating > 4.7. Операторов сравнения не так уж и много:<=.bool. Это логический тип данных, который имеет лишь два значения: True (истина) и False (ложь) . bool — это подкласс типа int, и значения True и False можно конвертировать в целые числа:int(True) приведёт значение к числу 1int(False) приведёт значение к числу 0True:rating = 1.1
if rating: # Переменная rating равна 1.1, значит условие вернет True
print('Оценка поставлена')
else:
print('У фильма нет оценки')
# Вывод в терминал: 'Оценка поставлена' None конвертируются в Falserating = 0
if rating: # Переменная rating равна 0, значит условие вернет False.
print('Оценка поставлена')
else:
print('У фильма нет оценки')
# Вывод в терминал: 'У фильма нет оценки' None выполняется по ключевому слову is: оператор == не сработает.rating = None
if rating is None:
print('У фильма нет оценки')
else:
print('Оценка поставлена') False, и без вложенных условий if обработать такую проверку, вроде бы, невозможно:rating = 0
if rating:
if rating > 4.7:
print('Фильм оценили и очень высоко!')
else:
print('У фильма нет оценки')
print('Проверка окончена') if, а этого лучше избегать. Было бы лучше записать два логических выражения в одном условии — это будет короче и нагляднее. and и or. С их помощью можно связать логические выражения в общую систему. if оценка фильма получена [и, одновременно] оценка больше 4.7:
print('Отличный фильм, бегом за билетами!') and (И) возвращает True, если оба логических выражения вернут True; если хоть одно из выражений вернёт False — то оператор and вернёт False.rating = 4.9
if rating and rating >= 4.7:
# При rating = 4.9 это условие вернёт True
print('Отличный фильм, бегом за билетами!')
else:
# Если оценки нет или она меньше 4.7
print('У фильма нет оценки')
print('Проверка окончена')
False, если мост сведён — True.if мост №1 сведён AND мост №2 сведён:
# Если выражение в if вернёт True
Программист доберётся до дома
else:
Программист ночует в офисе True».or (англ. «или»): возвращает True, если хотя бы одно из логических выражений возвращает True.True — всё будет True.if мост №1 сведён OR мост №2 сведён:
# Если выражение в if вернёт True
Программист доберётся до дома
else:
Программист ночует в офисе bridge_1 = 'сведён'
bridge_2 = 'разведён'
if bridge_1 == 'сведён' or bridge_2 == 'сведён':
print('Программист доберётся до дома')
else:
print('Программист ночует в офисе') not инвертирует булевы значения: not True вернёт False; not False вернёт True.Start-Stop в автомобиле. Нажатие на кнопку должно включить двигатель или выключить его, в зависимости от того, работает сейчас двигатель или нет.status = False;status = Truestatus = True
# При каждом нажатии на кнопку запускается этот код:
if status:
# Если status равен True - присваиваем ему значение False
status = False
else:
# Если status равен False - присваиваем ему значение True
status = True
print(status) not:status = True
# При каждом нажатии на кнопку запускается этот код:
# Каким бы ни было значение переменной - заменяем его на противоположное
status = not status
print(status) x и y, координаты точки на плоскости. Программа должна определить, в какой четверти на координатной плоскости находится точка с переданными координатами.x = -2y = 5if y >= 0 and x >= 0: print('Первая четверть')elif y < 0 and x >= 0: print('Четвертая четверть')elif y >= 0 and x < 0: print('Вторая четверть')else: print('Третья четверть')